这篇内容是在有道云旧笔记基础上重新整理的 运维与环境配置 笔记。原始记录偏碎片化,这里补充了使用场景、阅读顺序和落地时需要注意的边界,方便以后在项目里快速复用。

适用场景 ​

  • 本地开发环境、服务器环境或容器环境出现类似问题时,用来快速回忆处理路径。
  • 需要把零散命令整理成可复查步骤,避免每次重新搜索同一类配置。
  • 发布、部署或系统调整前,用作操作前检查和回滚思路的参考。

核心要点 ​

  • 正文已经按 「参考资料」、「TWRP的使用方法/双清、三清、四清解释」、「SSH配置」、「可以插着数据线通过adb命令来创建证书、用户等」 等小节组织,阅读时可以先定位到当前问题对应的小节。
  • 保留了 23 段可直接参考的代码或命令,主要涉及 bash、shell、cp,复制前需要按当前项目路径、版本和变量名做调整。
  • 涉及命令行操作时,建议先在测试目录或测试环境执行,确认输出符合预期后再应用到生产环境。

参考资料 ​

TWRP的使用方法/双清、三清、四清解释 ​

SSH配置 ​

# 确保服务已启动
sudo systemctl start ssh

# 加入开机启动
sudo systemctl enable ssh

可以插着数据线通过adb命令来创建证书、用户等 ​

# 查看连接设备,记得开启开发者模式
adb devices

# 进入shell
adb shell

Ubuntu Touch 24.04 系统 ​

####在 UT 24.04(noble) 中:

  • 系统包 由 system-image / prebuilt rootfs 提供

  • apt 仓库被移除

  • dpkg 只剩下最小运行态

Libertine 容器路线,不需要 apt update ​

创建容器(24.04) ​
1
2
3
4
5
6
7
8
libertine-container-manager create \
-i noble \
-n noble

# 安装完成后执行
libertine-container-manager list
#看到下述,说明安装成功
noble
第二步:进入 dev 容器 ​
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
libertine-container-manager exec \
-i dev \
-c bash
#看到如下
groups: cannot find name for group ID 32011
I have no name!@ubuntu-phablet:~$

为什么会发生?(Ubuntu Touch 的真实结构)
关键点:Libertine 不是完整虚拟机

Ubuntu Touch 的 Libertine:

使用 宿主用户(phablet)

把 宿主的一些 UID/GID 直接带进容器

但 容器内的 /etc/group 是“干净版 Ubuntu”

所以会出现:

层 结果
宿主系统 GID=32011 是真实存在的(UT 自定义)
容器系统 /etc/group 没定义这个 GID

👉 因此 groups 命令只能显示 ID,找不到名字
进入容器 ​
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

libertine-container-manager exec -i noble -c bash

#拆看动迁用户ID
id -u

32011

# 创建lance用户
echo "lance:x:32011:32011::/home/lance:/bin/bash" >> /etc/passwd


# 创建目录
mkdir -p /home/lance

# 黜退容器
exit

# 再次进入 发现已经对了
libertine-container-manager exec -i noble -c bash
lance@ubuntu-phablet:~$

安装vin ​

1
2
# 只能在宿主机中安装,容器没有sudo权限
libertine-container-manager install-package -i noble -p vim

备份原地址 ​

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# 注意这里是宿主机
libertine-container-manager exec -i noble -c bash -e '
cp /etc/apt/sources.list.d/ubuntu.sources ./ubuntu.sources.bak
'

# 直接写入
libertine-container-manager exec -i noble -c "bash -c '
cat > /etc/apt/sources.list.d/ubuntu.sources << EOF
Types: deb
URIs: https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/
Suites: noble noble-updates noble-backports
Components: main universe restricted multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg

Types: deb
URIs: https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/
Suites: noble-security
Components: main universe restricted multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
EOF
'"


# 查看新源
libertine-container-manager exec -i noble -c "cat /etc/apt/sources.list.d/ubuntu.sources"

# 应该看到
URIs: https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/


# 更新apt
libertine-container-manager update -i noble

开启SSH &#8203;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
libertine-container-manager install-package -i noble -p openssh-server



# 只能创建用户级 创建
libertine-container-manager exec -i noble -c "mkdir -p ~/.ssh/sshd"

# 创建秘钥
libertine-container-manager exec -i noble -c "ssh-keygen -t ed25519 -f ~/.ssh/sshd/ssh_host_ed25519_key -N ''"

#验证秘钥是否存在
libertine-container-manager exec -i noble -c "ls -l ~/.ssh/sshd"
# 设置权限
libertine-container-manager exec -i noble -c "mkdir -p ~/.ssh/sshd && chmod 700 ~/.ssh ~/.ssh/sshd"

快捷命令 &#8203;

# 快速切换root

sudo su root

常见错误 &#8203;

  • Read-only file system
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

输入mount -o remount rw /(注意不要输错,那个是小写字母o,不是数字0,然后rw和/中间有一个空格)
#这时候你会发现手机重启后又得重来一遍,而且安装的软件设置开机自启也会有点问题的,故写一个shell 开机启动挂载


# 添加开机脚本
=========================================================
# /etc/rc.local
nohup sh /home/phablet/startup.sh > /home/phablet/startup-log.txt 2>&1

# startup.sh
======================================================================
#! /bin/sh
if [ -d /home/phablet/.startup.d ]; then
for i in /home/phablet/.startup.d/*.sh
do
if [ -r $i ]
then
$i
fi
done
unset i
fi

# 设置可执行权限
===============================================================================
chmod +x /home/phablet/.startup.d/mounts.sh /home/phablet/startup.sh
  • 系统中不存在沙箱用户'_apt',无法降低权限

    sudo su root sudo adduser _apt --force-badname

更换源 &#8203;

1
2
3
4

vi /etc/apt/sources.list
:%s/ports.ubuntu.com/mirrors.tuna.tsinghua.edu.cn/g
:%s/http:\/\/ports.ubuntu.com/https:\/\/mirrors.tuna.tsinghua.edu.cn/g

安装配置Docker &#8203;

安装相关包 &#8203;

1
2
3
4
5
6
7
8
9
10
11
12
$ sudo apt-get update # 先更新一下软件源库信息

$ sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
software-properties-common

# 或者这样安装

sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin

添加软件仓库 &#8203;

官方仓库 &#8203;
1
2
3
4
5
6
7
8
# 添加 Docker 官方的 GPG 密钥(为了确认所下载软件包的合法性,需要添加软件源的 GPG 密钥)
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

# 设置稳定版本的apt仓库地址
$ sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
阿里云仓库 &#8203;
1
2
3
4
5
6
7
8
9
10
11
$ curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
$ curl -fsSL https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
# https://mirrors.tuna.tsinghua.edu.cn/
$ sudo add-apt-repository \
"deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \
$(lsb_release -cs) \
stable"
$ sudo add-apt-repository \
"deb [arch=amd64] https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu \
$(lsb_release -cs) \
stable"
安装docker &#8203;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74

sudo curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh ./get-docker.sh --dry-run



$ sudo apt-get update
$ sudo apt-get install docker-ce # 安装最新版的docker

$ sudo apt-get install \
ca-certificates \
curl \
gnupg -y

$ sudo mkdir -m 0755 -p /etc/apt/keyrings
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

$ echo \
"deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

#如果需要安装指定版本的,使用以下命令:
$ apt-cache madison docker-ce | awk '{ print $3 }'
$ apt-cache policy docker-ce # 查看可供安装的所有docker版本
$ sudo apt-get install docker-ce=18.03.0~ce-0~ubuntu # 安装指定版本的docker
``
# 上面方式只安装成功过一次

$ sudo apt-get install docker-ce docker-ce-cli containerd.io -y #

# 检查docker是否安装成功
$ docker --version # 查看安装的docker版本

$ DOCKER_CONFIG=${DOCKER_CONFIG:-$HOME/.docker}
$ mkdir -p $DOCKER_CONFIG/cli-plugins
$ curl -SL https://github.com/docker/compose/releases/download/v2.15.1/docker-compose-linux-x86_64 -o $DOCKER_CONFIG/cli-plugins/docker-compose

# 这里要注意的是CPU类型(指令集)
$ uname -a
$ lscpu
# 我这里一直安装失败,是应为官网curl的文件版本一直报错,忘记自己我的物理机非x86_64,而是aarch64 对应修改文件名/地址即可
# 无法加速的github使用 curl -SL https://gitclone.com/https://github.com/docker/compose/releases/download/v2.31.0/docker-compose-linux-aarch64 -o $DOCKER_CONFIG/cli-plugins/docker-compose

如果你已经把 Docker Compose 的文件下载到本地,可以按照以下步骤手动解压并安装:

确保文件完整性:
确认你下载的文件是正确的 Docker Compose 二进制文件,可以通过以下命令检查文件的大小和校验:

bash
复制代码
ls -lh /path/to/docker-compose-linux-aarch64
复制文件到目标目录:
将文件复制到 $DOCKER_CONFIG/cli-plugins/ 目录下,并且确保文件名为 docker-compose(去掉 .tar 或 .gz 后缀,如果有的话)。

bash
复制代码
cp /path/to/docker-compose-linux-aarch64 $DOCKER_CONFIG/cli-plugins/docker-compose
授予执行权限:
给文件授予执行权限:

bash
复制代码
chmod +x $DOCKER_CONFIG/cli-plugins/docker-compose
验证安装:
你可以通过以下命令验证 Docker Compose 是否已正确安装:

bash
复制代码
docker compose version
这样就完成了离线安装。由于没有下载到文件的解压需求,直接将二进制文件复制并授权即可。


$ sudo systemctl enable docker.service

实践检查清单 &#8203;

  • 执行命令前确认当前用户、工作目录、端口、容器名和目标路径,避免把示例值直接用于生产环境。
  • 改配置前先备份原文件;涉及服务 reload/restart 时,先用检查命令验证配置可用。

复盘小结 &#8203;

这篇笔记更适合作为问题排查或方案落地前的速查材料。后续如果在真实项目中再次遇到同类问题,可以继续把具体版本、报错信息、最终取舍和验证结果补到对应小节里,让它从代码片段逐步沉淀成完整方案。